package edu.zzuli.common;

/**
 *
 * @author Chen-D.W
 * @date 2018/1/4
 */
public class HlafSeach_2 {

    //todo 二分查找的空间复杂度为 o(log(n))
    /**
     * todo 二分查找优点：
     *                          1、查找迅速
     *                          2、适用于有序且需进行多次查找的数组
     *                    缺点：
     *                          1、只能查询有序的且有规律的数组
     */
    /**
     * @Author 陈董伟  edu.zzuli
     * Date 2018/1/4 12:54
     * @Descrintion 二分查找
     */
    public static int hlafseach(int[] arr, int key) {
        int min, max, mid;
        min = 0;
        max = arr.length - 1;
        mid = (min + max) >> 1;
        while (arr[mid] != key) {
            if (key > arr[mid]) {
                min = mid + 1;
            } else {
                max = mid - 1;
            }
            if (max < min) {
                return -1;
            }
            mid = (max + mid) >> 1;
        }
        return mid;
    }

    public static int getInteger(int arr[] , int key){
        for (int i=0;i<arr.length;i++) {
            if (arr[i]==key){
                return i;
            }
        }
        return -1;
    }


    public static void main(String[] args) {
        int [] arr={6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
        int key=6;
//        long startTime=System.nanoTime();   //获取开始时间
////        System.out.println(hlafseach(arr,key));
//        System.out.println(2<<3);
//
//        long endTime=System.nanoTime(); //获取结束时间


        long startTime1=System.nanoTime();   //获取开始时间
//        System.out.println(getInteger(arr,key));
        System.out.println(2*8);

        long endTime1=System.nanoTime(); //获取结束时间

//        System.out.println("程序运行时间1： "+(endTime-startTime)+"ns");
        System.out.println("程序运行时间： "+(endTime1-startTime1)+"ns");


    }
}